package com.xiaozhengkeji.starbootserver.base.redis;


import com.xiaozhengkeji.starbootserver.config.RedisIndexConfig;
import org.springframework.stereotype.Service;
import wiki.xsx.core.util.RedisUtil;

import java.util.concurrent.TimeUnit;


@Service("VerifyBaseRedis")
// 用于设置、获取和删除验证码的类。
public class VerifyBaseRedis {


    /**
     * 设置一个图形验证码
     */
    public void setVerificationCode(String date, String va) {
        // 设置Redis 60秒过期
        RedisUtil.getStringHandler(RedisIndexConfig.VerifyCodeIndex).set("GVC_" + date, va, 60, TimeUnit.SECONDS);
    }

    /**
     * 获取一个图形的验证码
     */
    public String getVerificationCode(String date) {
        return RedisUtil.getStringHandler(RedisIndexConfig.VerifyCodeIndex).get("GVC_" + date);
    }

    /**
     * 删除一个图形验证码
     */
    public void delVerificationCode(String date) {
        RedisUtil.getStringHandler(RedisIndexConfig.VerifyCodeIndex).remove("GVC_" + date);
    }

    /**
     * 验证一个图形验证码
     */
    public Boolean hasVCode(String vt, String vc) {
        //测试环境下 vt = vc 返回 true
        if (vt.equals(vc)) {
            return true;
        }


        String vtc = getVerificationCode(vt);
        if (vtc != null && vtc.equalsIgnoreCase(vc)) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 设置一个邮箱验证码
     */
    public void setEmailVerificationCode(String email, String vc) {
        // 设置Redis 10分钟过期
        RedisUtil.getStringHandler(RedisIndexConfig.VerifyCodeIndex).set("EVC_" + email, vc, 600, TimeUnit.SECONDS);
    }

    /**
     * 获取一个邮箱验证码
     */
    public String getEmailVerificationCode(String email) {
        return RedisUtil.getStringHandler(RedisIndexConfig.VerifyCodeIndex).get("EVC_" + email);
    }

    /**
     * 删除一个邮箱验证码
     */
    public void delEmailVerificationCode(String email) {
        RedisUtil.getStringHandler(RedisIndexConfig.VerifyCodeIndex).remove("EVC_" + email);
    }
}
